
namespace FastFood.Business.Logic
{
	using System;
	using System.Collections.Generic;
	using EDOSwit.Entity;
	using FastFood.Business.Entities;
	using FastFood.DataAccess;
    using System.Linq;

	/// <summary>
	/// Represents the Manager of Productos.
	/// </summary>
	[Serializable]
	public class ProductosManager : Singleton<ProductosManager>
	{
		#region Methods

		/// <summary>
		/// Selects all records from the Productos table.
		/// </summary>
		public IList<Productos> Listar()
		{
			try
			{
                return ProductosData.Instancia.Listar().Reverse().ToList();
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Selects a single record from the Productos table.
		/// </summary>
		public Productos Obtener(short productoID)
		{
			try
			{
				Productos producto = ProductosData.Instancia.Obtener(productoID);
                foreach (Productos_Insumos detalle in producto.Productos_Insumos)
                {
                    detalle.Insumos = InsumosData.Instancia.Obtener(detalle.insumoID);
                }
                return producto;
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Saves a record to the Productos table.
		/// </summary>
		public short Agregar(Productos productos)
		{
			try
			{
				return ProductosData.Instancia.Agregar(productos);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Updates a record in the Productos table.
		/// </summary>
		public bool Modificar(Productos productos)
		{
			try
			{
				return ProductosData.Instancia.Modificar(productos);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Deletes a record from the Productos table by its primary key.
		/// </summary>
		public bool Eliminar(short productoID)
		{
			try
			{
				return ProductosData.Instancia.Eliminar(productoID);
			}
			catch (Exception) { throw; }
		}

		#endregion
	}
}
